iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
AI & Data

花甲老頭學 AI系列 第 19

[鐵人12:Day 19] Transformer 2:模型架構 (1)

  • 分享至 

  • xImage
  •  

在開始探討 Transformer 模型架構之前,先來說明一下「神經序列轉導模型 (Neural Sequence Transduction Model)」這一個老頭之前不是很熟悉的詞彙。

轉導 (Transduction,註一) 這個字的原始意義是「轉換某一物體至另外一種形式」,在自然語言處理的領域中,常見的「序列轉導 (Sequence Transduction)」指的是將某一段文字或語音 (即是文字語音序列) 轉換為另一種形式的表示法,像是「翻譯 (Translation)」就是典型的序列轉導行為。因此所謂的「神經序列轉導模型」,即是一個深度神經網路模型(DNN 模型)其執行序列轉導的工作。

「編碼器/解碼器 (Encoder/Decoder)」結構是最常使用也最有效的神經序列轉導模型。Transformer 基本上也是要解決序列轉導問題的,所以它也使用了編碼器/解碼器模型結構,下圖即為 Transformer 的最高階的結構圖(註二):
https://ithelp.ithome.com.tw/upload/images/20201002/20129616z8pzmhYzJL.png

Encoder Stack

編碼器包含 6 個完全相同的神經網路層 (layer),每一個網路層包含了 2 個子層 (sub-layer),第一個子層是 multi-head self-attention 層,第二個子層是 positionwise fully connected feed-forward 層。每一個子層皆實作 residual connection 並於子層輸出處執行正規化 (normalization) 處理。編碼器的結構如下圖:
https://ithelp.ithome.com.tw/upload/images/20201002/20129616LwiJ9cxYYA.png

用數學式來看,每一個網路層可以表示為:

Input: x
1st Sublayer Output: https://chart.googleapis.com/chart?cht=tx&chl=y%20%3D%20LayerNorm(x%20%2B%20MHAttention(x))
2nd Sublayer Output: https://chart.googleapis.com/chart?cht=tx&chl=O%20%3D%20LayerNorm(y%20%2B%20PFF(y))

何謂 multi-head?何謂 positionwise?在論文稍後有詳細的說明。

Decoder Stack

解碼器也同樣包含了 6 個相同的神經網路層,每一個網路層含有 3 個子層,由下到上分別是

Masked Multi-Head Self-Attention
Multi-Head Attention
Positionwise Fully Connected Feed-Forward

每一個子層也實作 residual connection 及正規化處理。解碼器的結構如下圖:
https://ithelp.ithome.com.tw/upload/images/20201002/201296160Xckva6s8v.png

要使用 Masked Multi-Head Self-Attention 的理由是:確保在計算第 i 個解碼器輸出時,僅用到 i 之前的輸出值。

第二個子層 Multi-Head Attention,是以「第一個子層的輸出」和「編碼器的輸出」執行 Attention 計算。

結合編碼器及解碼器,並分別在其輸入前加上 Embedding & Positional Encoding,並在解碼器的輸出處加上 Linear 層及 Softmax 層,如此便是 Transformer 的全貌了。
https://ithelp.ithome.com.tw/upload/images/20201002/201296162iqR9tRrRn.png

而在這個結構之下,Transformer 是怎麼運作的?舉個例子,如下圖(註二),這是一個由法文翻譯為英文的 Transformer,從編碼器端輸入一句法文「je suis etudiant」,從解碼器端則輸出翻譯出的英文「I am a student」。整個流程主的步驟是:

Step 1:整句法文「je suis etudiant」做為編碼器的輸入,編碼器一次處理整個句子,產生輸出 X。
Step 2:解碼器以 X 及空序列做為其輸入,產生第一個輸出 I。
Step 3:解碼器以 X 及 I 做為其輸入,產生第二個輸出 am。
Step 4:解碼器以 X 及 I am 做為其輸入,產生第三個輸出 a。
Step 5:解碼器以 X 及 I am a 做為其輸入,產生第四個輸出 student。
Step 6:解碼器以 X 及 I am a student 做為其輸入,產生第五個輸出 <end of sentence>。

https://ithelp.ithome.com.tw/upload/images/20201002/20129616m6Q5br2xqT.png

(註一:在 Machine Learning Mastery 網站上有一篇介紹 Transduction 的文章「Gentle Introduction to Transduction in Machine Learning」) 大家可以參考)
(註二:源自 Jay Alammar 的《The Illustrated Transformer》


上一篇
[鐵人12:Day 18] Transformer 1:源起及簡介
下一篇
[鐵人12:Day 20] Transformer 3:模型架構 (2)
系列文
花甲老頭學 AI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言